home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Tools 2
/
Amiga Tools 2.iso
/
tex
/
macros
/
source
/
base
/
doc.sty
< prev
next >
Wrap
Text File
|
1995-03-15
|
29KB
|
755 lines
%%
%% This is file `doc.sty', generated
%% on <1995/3/2> with the docstrip utility (2.2i).
%%
%% The original source files were:
%%
%% doc.dtx (with options: `package')
%%
%% Copyright 1994 the LaTeX3 project and the individual authors.
%% All rights reserved. For further copyright information see the file
%% legal.txt, and any other copyright indicated in this file.
%%
%% This file is part of the LaTeX2e system.
%% ----------------------------------------
%%
%% This system is distributed in the hope that it will be useful,
%% but WITHOUT ANY WARRANTY; without even the implied warranty of
%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
%%
%%
%% IMPORTANT NOTICE:
%%
%% For error reports in case of UNCHANGED versions see bugs.txt.
%%
%% Please do not request updates from us directly. Distribution is
%% done through Mail-Servers and TeX organizations.
%%
%% You are not allowed to change this file.
%%
%% You are allowed to distribute this file under the condition that
%% it is distributed together with all files mentioned in manifest.txt.
%%
%% If you receive only some of these files from someone, complain!
%%
%% You are NOT ALLOWED to distribute this file alone. You are NOT
%% ALLOWED to take money for the distribution or use of either this
%% file or a changed version, except for a nominal charge for copying
%% etc.
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{doc}
[1994/10/14 v1.9s
Standard LaTeX documentation package (FMi)]
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
%% Digits \0\1\2\3\4\5\6\7\8\9
%% Exclamation \! Double quote \" Hash (number) \#
%% Dollar \$ Percent \% Ampersand \&
%% Acute accent \' Left paren \( Right paren \)
%% Asterisk \* Plus \+ Comma \,
%% Minus \- Point \. Solidus \/
%% Colon \: Semicolon \; Less than \<
%% Equals \= Greater than \> Question mark \?
%% Commercial at \@ Left bracket \[ Backslash \\
%% Right bracket \] Circumflex \^ Underscore \_
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
%% Package `doc' to use with LaTeX 2e
%% Copyright (C) 1989-1994 Frank Mittelbach, all rights reserved.
\@ifundefined{macro@cnt}{}{\endinput}
\catcode`\^^A=14
\def\macrocode{\macro@code
\frenchspacing \@vobeyspaces
\xmacro@code}
\def\macro@code{%
\topsep \MacrocodeTopsep
\@beginparpenalty \predisplaypenalty
\if@inlabel\leavevmode\fi
\trivlist \parskip \z@ \item[]%
\macro@font
\leftskip\@totalleftmargin \advance\leftskip\MacroIndent
\rightskip\z@ \parindent\z@ \parfillskip\@flushglue
\blank@linefalse \def\par{\ifblank@line
\leavevmode\fi
\blank@linetrue\@@par
\penalty\interlinepenalty}
\obeylines
\let\do\do@noligs \verbatim@nolig@list
\let\do\@makeother \dospecials
\global\@newlistfalse
\global\@minipagefalse
\ifcodeline@index
\everypar{\global\advance\c@CodelineNo\@ne
\llap{\theCodelineNo\ \hskip\@totalleftmargin}%
\check@module}%
\else \everypar{\check@module}%
\fi
\init@crossref}
\newif\ifblank@line
\def\endmacrocode{%
\ifpm@module \endgroup \pm@modulefalse \fi
\everypar{}%
\global\@inlabelfalse
\endtrivlist
\close@crossref}
\@ifundefined{MacroFont}{%
\def\MacroFont{\math@fontsfalse\reset@font\small\ttfamily}%
}{}
\@ifundefined{AltMacroFont}{%
\def\AltMacroFont{\math@fontsfalse\small
\reset@font\slshape\ttfamily}%
}{}
\let\macro@font=\MacroFont
\def\check@module{%
\ifcheck@modules
\ifpm@module \endgroup \pm@modulefalse \fi
\expandafter\futurelet\expandafter\next\expandafter\ch@percent
\fi}
\newif\ifpm@module
\def\DontCheckModules{\check@modulesfalse}
\def\CheckModules{\check@modulestrue}
\newif\ifcheck@modules \check@modulestrue
\def\ch@percent{%
\if \percentchar\next
\expandafter\check@angle
\fi}
\def\check@angle#1{\futurelet\next\ch@angle}
\begingroup
\catcode`\<\active
\gdef\ch@angle{\ifx<\next
\expandafter\ch@plus@etc
\else \percentchar \fi}
\gdef\ch@plus@etc<{\futurelet\next\check@plus@etc}
\endgroup
\def\check@plus@etc{%
\if +\next
\let\next\pm@module
\else\if -\next
\let\next\pm@module
\else\if *\next
\let\next\star@module
\else\if /\next
\let\next\slash@module
\else
\let\next\pm@module
\fi\fi\fi\fi
\next}
\begingroup
\catcode`\~=\active
\lccode`\~=`\>
\lowercase{\gdef\pm@module#1~}{\pm@moduletrue
\Module{#1}\begingroup
\advance\guard@level\@ne
\ifnum\guard@level>\c@StandardModuleDepth\AltMacroFont\fi
}
\lowercase{\gdef\star@module#1~}{%
\Module{#1}%
\global \advance \guard@level\@ne
\ifnum \guard@level>\c@StandardModuleDepth
\global\let\macro@font=\AltMacroFont \macro@font
\fi}
\catcode`\>=\active
\gdef\slash@module#1>{%
\Module{#1}%
\global \advance \guard@level\m@ne
\ifnum \guard@level=\c@StandardModuleDepth
\global\let\macro@font\MacroFont \macro@font
\fi
}
\endgroup
\newcounter{StandardModuleDepth}
\newcount \guard@level
\@ifundefined{Module}{%
\def\Module#1{\mod@math@codes$\langle\mathsf{#1}\rangle$}
}{}
\def\mod@math@codes{\mathcode`\|="226A \mathcode`\&="2026}
\newskip\MacrocodeTopsep \MacrocodeTopsep = 3pt plus 1.2pt minus 1pt
\newdimen\MacroIndent
\settowidth\MacroIndent{\rmfamily\scriptsize 00\ }
\@namedef{macrocode*}{\macro@code\sxmacro@code}
\expandafter\let\csname endmacrocode*\endcsname = \endmacrocode
\catcode`\!=\catcode`\% ^^A In this section there must not be
^^A any exclamation marks.
^^A
\begingroup
\catcode`\|=\z@ \catcode`\[=\@ne \catcode`\]=\tw@
\catcode`\{=12 \catcode`\}=12
\catcode`\%=12 \catcode`\ =\active \catcode`\\=\active
!% \end{macrocode*}
! Next follows the actual definition of |\macro@code|;
! notice the
! use of the new escape character. We manage to get the argument
! surrounded by the string |\end{macrocode}|, but at the end
! however, in spite of the actual characters used during the
! definition of
! this macro, |\end| with the argument |{macrocode}|
! will be executed, to ensure a balanced environment.
! \begin{macrocode*}
|gdef|xmacro@code#1% \end{macrocode}[#1|end[macrocode]]
!% \end{macrocode*}
! \begin{macro}{\sxmacro@code}
! The definition of |\sxmacro@code| is completely analogous,
! only
! here a slightly different terminating string will be used.
! Note that the space is not active in this environment.
! \begin{macrocode}
|catcode`| =12
|gdef|sxmacro@code#1% \end{macrocode*}[#1|end[macrocode*]]
!% \end{macrocode}
! because the |\catcode| changes have been made local by
! commencing a
! new group, there now follows the matching |\endgroup|
! in a rather
! unusual style of writing.
! \begin{macrocode}
|endgroup
!% \end{macrocode}
\catcode`\!=12
\def\DescribeMacro{\leavevmode\@bsphack
\begingroup\MakePrivateLetters\Describe@Macro}
\def\Describe@Macro#1{\endgroup
\marginpar{\raggedleft\PrintDescribeMacro{#1}}%
\SpecialUsageIndex{#1}\@esphack\ignorespaces}
\def\DescribeEnv{\leavevmode\@bsphack\begingroup\MakePrivateLetters
\Describe@Env}
\def\Describe@Env#1{\endgroup
\marginpar{\raggedleft\PrintDescribeEnv{#1}}%
\SpecialEnvIndex{#1}\@esphack\ignorespaces}
\reversemarginpar
\setlength\marginparpush{0pt} \setlength\marginparwidth{8pc}
{\catcode`\|=\z@ \catcode`\\=12
|gdef|bslash{\}}
\def\verbatim{\@beginparpenalty \predisplaypenalty \@verbatim
\MacroFont \frenchspacing \@vobeyspaces \@xverbatim}
\@namedef{verbatim*}{\@beginparpenalty \predisplaypenalty \@verbatim
\MacroFont \@sxverbatim}
\def\@verbatim{\trivlist \item[]\if@minipage\else\vskip\parskip\fi
\leftskip\@totalleftmargin\rightskip\z@
\parindent\z@\parfillskip\@flushglue\parskip\z@
\@@par
\@tempswafalse
\def\par{\if@tempswa\hbox{}\fi\@tempswatrue\@@par
\penalty\interlinepenalty
\check@percent}%
\obeylines
\let\do\do@noligs \verbatim@nolig@list
\let\do\@makeother \dospecials}
{\catcode`\%=12
\long\gdef\check@percent#1{\ifx #1%\let\next\@empty \else
\let\next=#1\fi \next}}
\def\verb{\relax\ifmmode\hbox\else\leavevmode\null\fi
\bgroup \let\do\do@noligs \verbatim@nolig@list
\ttfamily \verb@eol@error \let\do\@makeother \dospecials
\@ifstar{\@sverb}{\@vobeyspaces \frenchspacing \@sverb}}
\let\verb@balance@group\@empty
\def\verb@egroup{\global\let\verb@balance@group\@empty\egroup}
\begingroup
\obeylines%
\gdef\verb@eol@error{\obeylines%
\def^^M{\verb@egroup\@latex@error{%
Text for \noexpand\verb command ended by end of line}\@ehc}}%
\endgroup
\def\@sverb#1{%
\catcode`#1\active \lccode`\~`#1%
\gdef\verb@balance@group{\verb@egroup
\@latex@error{Illegal use of \noexpand\verb command}\@ehc}%
\aftergroup\verb@balance@group
\lowercase{\let~\verb@egroup}}
\def\verbatim@nolig@list{\do\`\do\<\do\>\do\,\do\'\do\-}
\def\do@noligs#1{%
\catcode`#1\active
\begingroup
\lccode`\~=`#1\relax
\lowercase{\endgroup\def~{\leavevmode\kern\z@\char`#1}}}
\newcount\macro@cnt \macro@cnt=0
\def\macro{\begingroup
\catcode`\\12
\MakePrivateLetters \m@cro@ \iftrue}
\def\environment{\begingroup
\catcode`\\12
\MakePrivateLetters \m@cro@ \iffalse}
\long\def\m@cro@#1#2{\endgroup \topsep\MacroTopsep \trivlist
\edef\saved@macroname{\string#2}%
\def\makelabel##1{\llap{##1}}%
\if@inlabel
\let\@tempa\@empty \count@\macro@cnt
\loop \ifnum\count@>\z@
\edef\@tempa{\@tempa\hbox{\strut}}\advance\count@\m@ne \repeat
\edef\makelabel##1{\llap{\vtop to\baselineskip
{\@tempa\hbox{##1}\vss}}}%
\advance \macro@cnt \@ne
\else \macro@cnt\@ne \fi
\edef\@tempa{\noexpand\item[%
#1%
\noexpand\PrintMacroName
\else
\noexpand\PrintEnvName
\fi
{\string#2}]}%
\@tempa
{\advance\c@CodelineNo\@ne
#1%
\SpecialMainIndex{#2}\nobreak
\DoNotIndex{#2}%
\else
\SpecialMainEnvIndex{#2}\nobreak
\fi
}%
\ignorespaces}
\let\endmacro \endtrivlist
\let\endenvironment\endmacro
\newskip\MacroTopsep \MacroTopsep = 7pt plus 2pt minus 2pt
\@ifundefined{PrintMacroName}
{\def\PrintMacroName#1{\strut \MacroFont \string #1\ }}{}
\@ifundefined{PrintDescribeMacro}
{\def\PrintDescribeMacro#1{\strut \MacroFont \string #1\ }}{}
\@ifundefined{PrintDescribeEnv}
{\def\PrintDescribeEnv#1{\strut \MacroFont #1\ }}{}
\@ifundefined{PrintEnvName}
{\def\PrintEnvName#1{\strut \MacroFont #1\ }}{}
\begingroup
\catcode`\~\active
\gdef\SpecialEscapechar#1{%
\begingroup
\uccode`\~`#1%
\uppercase{\gdef\active@escape@char{~}}%
\escapechar\m@ne \xdef\special@escape@char{\string#1}%
\endgroup}
\endgroup
\begingroup \catcode`\|=\z@ \catcode`\\=\active
|gdef|init@crossref{|catcode`|\|active |let\|bslash
|MakePrivateLetters
|catcode|expandafter`|special@escape@char|active
|expandafter|let|active@escape@char|scan@macro}
|endgroup
\SpecialEscapechar{\\}
\@ifundefined{MakePrivateLetters}
{\let\MakePrivateLetters\makeatletter}{}
\def\close@crossref{\SpecialEscapechar\\}
\def\scan@macro{%
\special@escape@char
\step@checksum
\ifscan@allowed
\let\macro@namepart\@empty
\def\next{\futurelet\next\macro@switch}%
\else \let\next\@empty \fi
\next}
\newif\ifscan@allowed \scan@allowedtrue
\def\DisableCrossrefs{\@bsphack\scan@allowedfalse\@esphack}
\def\EnableCrossrefs{\@bsphack\scan@allowedtrue
\def\DisableCrossrefs{\@bsphack\@esphack}\@esphack}
\def\macro@switch{\ifcat\noexpand\next a%
\let\next\macro@name
\else \let\next\short@macro \fi
\next}
\def\short@macro#1{\begingroup
\catcode`\&=11 \uccode`\&=\expandafter`\string#1%
\uppercase{\def\macro@namepart{&}}%
\endgroup
\ifnot@excluded
\produce@index{#1}\fi
\scan@allowedfalse#1%
\scan@allowedtrue }
\def\produce@index#1{%
\if\noexpand#1\special@escape@char
\scan@allowedfalse \it@is@a\special@escape@char \else
\if\noexpand#1\bslash \it@is@a\bslash \else
\if\noexpand#1\space \it@is@a\space \else
\ifx#1\par
\it@is@a\space \else
\ifx#1\relax \else
\if\noexpand#1\bgroup \LeftBraceIndex \else
\if\noexpand#1\egroup \RightBraceIndex \else
\if\noexpand#1\percentchar \PercentIndex \else
\it@is@a{\string#1}%
\fi \fi \fi \fi \fi \fi \fi \fi}
\def\macro@name#1{\edef\macro@namepart{\macro@namepart#1}%
\futurelet\next\more@macroname}
\def\more@macroname{\ifcat\noexpand\next a%
\let\next\macro@name
\else \let\next\macro@finish \fi
\next}
\def\macro@finish{%
\macro@namepart
\ifnot@excluded
\edef\@tempa{\noexpand\SpecialIndex{\bslash\macro@namepart}}%
\@tempa \fi}
\def\DoNotIndex{\begingroup \MakePrivateLetters
\catcode`\\12
\do@not@index}
\long\def\do@not@index#1{%
\endgroup
\addto@hook\index@excludelist{#1,}}
\long\def\addto@hook#1#2{#1\expandafter{\the#1#2}}
\newtoks\index@excludelist
\index@excludelist{}
\begingroup
\catcode`\|=0%
\catcode`\\=12
|gdef|ifnot@excluded{|expandafter
|expanded@notin|expandafter{|expandafter
\|macro@namepart,}{|the|index@excludelist}}
|endgroup
\def\expanded@notin#1#2{%
\def\in@@##1#1##2##3\in@@{%
\ifx\expanded@notin##2}%
\expandafter\in@@#2#1\expanded@notin\in@@}
\@ifundefined{actualchar}{\def\actualchar{=}}{}
\@ifundefined{quotechar}{\def\quotechar{!}}{}
\@ifundefined{levelchar}{\def\levelchar{>}}{}
\@ifundefined{encapchar}{\def\encapchar{|}}{}
\@ifundefined{verbatimchar}{\def\verbatimchar{+}}{}
\def\SpecialIndex#1{\@bsphack\special@index{\expandafter\@gobble
\string#1\actualchar
\string\verb\quotechar*\verbatimchar\string#1\verbatimchar}%
\@esphack}
\def\SpecialMainIndex#1{\@bsphack\special@index{\expandafter\@gobble
\string#1\actualchar
\string\verb
\quotechar*\verbatimchar
\string#1\verbatimchar
\encapchar main}%
\@esphack}
\def\SpecialMainEnvIndex#1{\@bsphack\special@index{%
#1\actualchar
{\string\ttfamily\space#1}
(environment)%
\encapchar main}%
\index{environments:\levelchar{\protect\ttfamily#1}\encapchar
main}\@esphack}
\def\SpecialUsageIndex#1{\@bsphack\index{\expandafter\@gobble\string#1%
\actualchar\string\verb\quotechar*\verbatimchar
\string#1\verbatimchar
\encapchar usage}\@esphack}
\def\SpecialEnvIndex#1{\@bsphack
\index{#1\actualchar{\protect\ttfamily#1}
(environment)\encapchar usage}%
\index{environments:\levelchar{\protect\ttfamily#1}\encapchar
usage}\@esphack}
\def\SortIndex#1#2{\index{#1\actualchar#2}}
\def\it@is@a#1{\special@index{\quotechar #1\actualchar
\string\verb\quotechar*\verbatimchar
\quotechar\bslash\quotechar#1\verbatimchar}}
\@ifundefined{LeftBraceIndex}{\def\LeftBraceIndex{%
\special@index{\bgroup\actualchar\string\verb\quotechar*\verbatimchar
\quotechar\bslash{\verbatimchar\string\iffalse}\string\fi}}}{}
\@ifundefined{RightBraceIndex}{\def\RightBraceIndex{%
\special@index{\egroup\actualchar\string\iffalse{\string\fi\string\verb
\quotechar*\verbatimchar\quotechar\bslash}\verbatimchar}}}{}
\@ifundefined{PercentIndex}
{\def\PercentIndex{\it@is@a\percentchar}}{}
\def\OldMakeindex{\def\PercentIndex{%
\special@index{\quotechar\percentchar\actualchar\string\verb
\quotechar*\verbatimchar\quotechar\bslash
\percentchar\percentchar\verbatimchar}}}
{\catcode`\%=12 \gdef\percentchar{%}}
\newif\ifhave@multicol
\IfFileExists{multicol.sty}{\have@multicoltrue
\RequirePackage{multicol}%
}{}
\newdimen\IndexMin \IndexMin = 80pt
\newcount\c@IndexColumns \c@IndexColumns = 3
\ifhave@multicol
\renewenvironment{theindex}
{\begin{multicols}\c@IndexColumns[\index@prologue][\IndexMin]%
\IndexParms \let\item\@idxitem \ignorespaces}%
{\end{multicols}}
\else
\typeout{Can't find multicol.sty -- will use normal index layout if
necessary.}
\def\theindex{\@restonecoltrue\if@twocolumn\@restonecolfalse\fi
\columnseprule \z@ \columnsep 35\p@
\twocolumn[\index@prologue]%
\IndexParms \let\item\@idxitem \ignorespaces}
\def\endtheindex{\if@restonecol\onecolumn\else\clearpage\fi}
\fi
\long\def\IndexPrologue#1{\@bsphack\def\index@prologue{#1}\@esphack}
\@ifundefined{index@prologue}
{\def\index@prologue{\section*{Index}%
\markboth{Index}{Index}%
The italic numbers denote the pages where the
corresponding entry is described,
numbers underlined point to the definition,
all others indicate the places where it is used.
}}{}
\@ifundefined{IndexParms}
{\def\IndexParms{%
\parindent \z@
\columnsep 15pt
\parskip 0pt plus 1pt
\rightskip 15pt
\mathsurround \z@
\parfillskip=-15pt
\small
\def\@idxitem{\par\hangindent 30pt}%
\def\subitem{\@idxitem\hspace*{15pt}}%
\def\subsubitem{\@idxitem\hspace*{25pt}}%
\def\indexspace{\par\vspace{10pt plus 2pt minus 3pt}}%
}}{}
\def\efill{\hfill\nopagebreak}%
\def\dotfill{\leaders\hbox to.6em{\hss .\hss}\hskip\z@ plus 1fill}%
\def\dotfil{\leaders\hbox to.6em{\hss .\hss}\hfil}%
\def\pfill{\unskip~\dotfill\penalty500\strut\nobreak
\dotfil~\ignorespaces}%
\def\*{\leavevmode\lower.8ex\hbox{$\,\widetilde{\ }\,$}}
\@ifundefined{main}{\def\main#1{\underline{#1}}}{}
\@ifundefined{usage}{\def\usage#1{\textit{#1}}}{}
\def\PrintIndex{\@input@{\jobname.ind}}
\def\printindex{\typeout{\string\printindex\space is obsolete!}%
\typeout{Please use \string\PrintIndex\space
if you are a macro implementor^^J
or get a newer version of the documented
software if you are a user}%
\PrintIndex}
\def\changes{\@bsphack\begingroup\@sanitize
\catcode`\\\z@ \catcode`\ 10 \MakePercentIgnore
\changes@}
\def\changes@#1#2#3{%
\def\protect##1{\string##1\space}%
\edef\@tempa{\noexpand\glossary{#1\levelchar
\expandafter\@gobble
\saved@macroname\actualchar
\string\verb\quotechar*%
\verbatimchar\saved@macroname
\verbatimchar:\levelchar #3}}%
\@tempa\endgroup\@esphack}
\def\saved@macroname{"General"}
\let\RecordChanges\makeglossary
\newdimen\GlossaryMin \GlossaryMin = 80pt
\newcount\c@GlossaryColumns \c@GlossaryColumns = 2
\ifhave@multicol
\newenvironment{theglossary}{%
\begin{multicols}\c@GlossaryColumns
[\glossary@prologue][\GlossaryMin]%
\GlossaryParms \let\item\@idxitem \ignorespaces}%
{\end{multicols}}
\else
\newenvironment{theglossary}{%
\@restonecoltrue\if@twocolumn\@restonecolfalse\fi
\columnseprule \z@ \columnsep 35\p@
\twocolumn[\glossary@prologue]%
\GlossaryParms \let\item\@idxitem \ignorespaces}
{\if@restonecol\onecolumn\else\clearpage\fi}
\fi
\long\def\GlossaryPrologue#1{\@bsphack
\def\glossary@prologue{#1}%
\@esphack}
\@ifundefined{glossary@prologue}
{\def\glossary@prologue{\section*{{Change History}}%
\markboth{{Change History}}{{Change History}}%
}}{}
\@ifundefined{GlossaryParms}{\let\GlossaryParms\IndexParms}{}
\def\PrintChanges{\@input@{\jobname.gls}}
\long\def\StopEventually#1{\@bsphack\gdef\Finale{#1%
\check@checksum}%
\init@checksum
\@esphack}
\def\OnlyDescription{\@bsphack\long\def\StopEventually##1{%
##1\endinput}\@esphack}
\let\Finale\relax
\begingroup
\obeyspaces%
\catcode`\^^M\active%
\gdef\meta{\begingroup\obeyspaces\catcode`\^^M\active%
\let^^M\do@space\let \do@space%
\def\-{\egroup\discretionary{-}{}{}\hbox\bgroup\itshape}%
\m@ta}%
\endgroup
\def\m@ta#1{\leavevmode\hbox\bgroup$\langle$\itshape#1\/$\rangle$\egroup
\endgroup}
\def\do@space{\egroup\space
\hbox\bgroup\itshape\futurelet\next\sp@ce}
\def\sp@ce{\ifx\next\do@space\expandafter\sp@@ce\fi}
\def\sp@@ce#1{\futurelet\next\sp@ce}
\def\IndexInput#1{%
\begingroup \macro@code
\frenchspacing \@vobeyspaces
\input{#1}\endmacrocode
\endgroup}
\def\maketitle{\par
\begingroup \def \thefootnote {\fnsymbol {footnote}}%
\setcounter {footnote}\z@
\def\@makefnmark{\hbox to\z@{$\m@th^{\@thefnmark}$\hss}}%
\long\def\@makefntext##1{\parindent 1em\noindent
\hbox to1.8em{\hss$\m@th^{\@thefnmark}$}##1}%
\if@twocolumn \twocolumn [\@maketitle ]%
\else \newpage \global \@topnum \z@ \@maketitle \fi
\thispagestyle{titlepage}\@thanks \endgroup
\setcounter {footnote}\z@
\gdef\@date{\today}\gdef\@thanks{}%
\gdef\@author{}\gdef\@title{}}
\@ifundefined{ps@titlepage}
{\let\ps@titlepage=\ps@plain}{}
\def\MakeShortVerb#1{%
\expandafter\ifx\csname cc\string#1\endcsname\relax
\typeout{*** Made \expandafter\@gobble\string#1\space a short
reference for \string\verb \on@line\space ***}%
\add@special{#1}%
\expandafter
\xdef\csname cc\string#1\endcsname{\the\catcode`#1}%
\begingroup
\catcode`\~\active \lccode`\~`#1%
\lowercase{%
\global\expandafter\let
\csname ac\string#1\endcsname~%
\gdef~{\verb~}}%
\endgroup
\global\catcode`#1\active
\else
\typeout{*** \expandafter\@gobble\string#1\space is already a
short reference for \string\verb \on@line\space ***}%
\fi}
\def\DeleteShortVerb#1{%
\expandafter\ifx\csname cc\string#1\endcsname\relax
\else
\typeout{*** Deleted \expandafter\@gobble\string#1\space as short
reference for \string\verb \on@line\space ***}%
\rem@special{#1}%
\global\catcode`#1\csname cc\string#1\endcsname
\global \expandafter\let \csname cc\string#1\endcsname \relax
\ifnum\catcode`#1=\active
\begingroup
\catcode`\~\active \lccode`\~`#1%
\lowercase{%
\global\expandafter\let\expandafter~%
\csname ac\string#1\endcsname}%
\endgroup \fi \fi}
\def\add@special#1{%
\rem@special{#1}%
\expandafter\gdef\expandafter\dospecials\expandafter
{\dospecials \do #1}%
\expandafter\gdef\expandafter\@sanitize\expandafter
{\@sanitize \@makeother #1}}
\def\rem@special#1{%
\def\do##1{%
\ifnum`#1=`##1 \else \noexpand\do\noexpand##1\fi}%
\xdef\dospecials{\dospecials}%
\begingroup
\def\@makeother##1{%
\ifnum`#1=`##1 \else \noexpand\@makeother\noexpand##1\fi}%
\xdef\@sanitize{\@sanitize}%
\endgroup}
\def\MakeShortverb{\typeout{*** Switch to \noexpand\MakeShortVerb
syntax, this is obsolete ***}\MakeShortVerb}
\def\DeleteShortverb{\typeout{*** Switch to \noexpand\DeleteShortVerb
syntax, this is obsolete ***}\DeleteShortVerb}
\def\init@checksum{\relax
\global\bslash@cnt\z@}
\def\check@checksum{\relax
\ifnum\check@sum=\z@
\typeout{**********************************}%
\typeout{* This macro file has no checksum!}%
\typeout{* The checksum should be \the\bslash@cnt!}%
\typeout{**********************************}%
\else
\ifnum\check@sum=\bslash@cnt
\typeout{*******************}%
\typeout{* Checksum passed *}%
\typeout{*******************}%
\else
\PackageError{doc}{Checksum not passed
(\the\check@sum<>\the\bslash@cnt)}%
{The file currently documented seems to be wrong.^^J%
Try to get a correct version.}%
\fi
\fi
\global\check@sum\z@}
\newcount\check@sum \check@sum = \z@
\newcount\bslash@cnt \bslash@cnt = \z@
\def\CheckSum#1{\@bsphack\global\check@sum#1\relax\@esphack}
\def\step@checksum{\global\advance\bslash@cnt\@ne}
\def\CharacterTable{\begingroup \CharTableChanges \character@table}
\begingroup
\catcode`\~=11
\gdef\character@table#1{\def\used~table{#1}%
\ifx\used~table\default~table
\typeout{***************************}%
\typeout{* Character table correct *}%
\typeout{***************************}%
\else
\PackageError{doc}{Character table corrupted}
{\the\wrong@table}
\show\default~table
\show\used~table
\fi
\endgroup}
\global\let\CharTableChanges\@empty
\makeatother
\gdef\default~table
{Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
Digits \0\1\2\3\4\5\6\7\8\9
Exclamation \! Double quote \" Hash (number) \#
Dollar \$ Percent \% Ampersand \&
Acute accent \' Left paren \( Right paren \)
Asterisk \* Plus \+ Comma \,
Minus \- Point \. Solidus \/
Colon \: Semicolon \; Less than \<
Equals \= Greater than \> Question mark \?
Commercial at \@ Left bracket \[ Backslash \\
Right bracket \] Circumflex \^ Underscore \_
Grave accent \` Left brace \{ Vertical bar \|
Right brace \} Tilde \~}
\endgroup
\newhelp\wrong@table{Some of the ASCII characters are corrupted.^^J
I now \string\show\space you both tables for comparison.}
\newif\ifcodeline@index \codeline@indexfalse
\let\CodelineNumbered\codeline@indextrue
\def\codeline@wrindex#1{\if@filesw
\immediate\write\@indexfile
{\string\indexentry{#1}%
{\number\c@CodelineNo}}\fi}
\let\special@index = \@gobble
\def\CodelineIndex{\makeindex
\codeline@indextrue
\let\special@index\codeline@wrindex}
\def\PageIndex{\makeindex
\codeline@indexfalse
\let\special@index\index}
\newcount\c@CodelineNo \c@CodelineNo\z@
\@ifundefined{theCodelineNo}
{\ifx\selectfont\undefined
\def\theCodelineNo{\rmfamily\scriptsize\arabic{CodelineNo}}%
\else
\def\theCodelineNo{\reset@font\scriptsize\arabic{CodelineNo}}%
\fi}
{}
\tolerance=1000\relax
{ \catcode`\"=12
\global\mathcode`\\="705C \global\mathcode`\@="7040 }
\@ifundefined{DocstyleParms}{}{}
\DocstyleParms \let\DocstyleParms\relax
\@ifundefined{AmSTeX}
{\def\AmSTeX{\leavevmode\hbox{$\mathcal A\kern-.2em\lower.376ex%
\hbox{$\mathcal M$}\kern-.2em\mathcal S$-\TeX}}}{}
\@ifundefined{BibTeX}
{\def\BibTeX{{\rmfamily B\kern-.05em%
\textsc{i\kern-.025em b}\kern-.08em%
T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}}}{}
\@ifundefined{SliTeX}
{\def\SliTeX{{\rmfamily S\kern-.06emL\kern-.18em\raise.32ex\hbox
{\scshape i}\kern -.03em\TeX}}}{}
\@ifundefined{PlainTeX}{\def\PlainTeX{\textsc{Plain}\kern2pt\TeX}}{}
\@ifundefined{Web}{\def\Web{\textsc{Web}}}{}
\def\MakePercentIgnore{\catcode`\%9\relax}
\def\MakePercentComment{\catcode`\%14\relax}
\def\DocInput#1{\MakePercentIgnore\input{#1}\MakePercentComment}
\def\GetFileInfo#1{%
\def\filename{#1}%
\def\@tempb##1 ##2 ##3\relax##4\relax{%
\def\filedate{##1}%
\def\fileversion{##2}
\def\fileinfo{##3}}%
\edef\@tempa{\csname ver@#1\endcsname}%
\expandafter\@tempb\@tempa\relax? ? \relax\relax}
\endinput
%%
%% End of file `doc.sty'.